package com.example;

/**
 *
 * Java里面的继承都是单继承，子类只能够直接继承一个父类，一个类可以有多个子类
 * 子类继承父类之后：
 * 1.定义自己独有的属性
 * 2.私有化的独有属性暴露set/get方法
 * 3.公开构造方法（父类的带参数构造不能直接继承）
 * 4.重写toString，一般要手动重写逻辑
 */
public class Cat extends Animal {
    /* 如果子类有跟父类一样的属性，子类对象会优先使用自己的 */
    public int a;
    /* 颜色 */
    private String color;

    public Cat() {
    }

    /*public Cat(String name, int age) {
        setName(name);
        setAge(age);
    }*/

    public Cat(String name, int age) {
        super(name, age); // 调用父类的带参数构造方法
    }

    public Cat(String name, int age, String color) {
        super(name, age);
        // this.color = color;
        setColor(color);
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    /* 重写的方法，访问权限级别不能比父类中低 */
    @Override
    public void catching() {
        //super.catching(); //调用父类的方法
        System.out.println("猫:喵喵喵");
    }

    /* 子类的toString，需要手动重写，包含父类的属性值以及独有的属性值 */
    @Override
    public String toString() {
        return "Cat{" +
                "name='" + getName() + '\'' +
                ", age=" + getAge() +
                ", color='" + color + '\'' +
                '}';
    }
}